feat(governance): add custom properties tools - #2992
Conversation
Add a new non-default "governance" toolset (icon: law) with tools for managing GitHub repository rulesets at the repository, organization, and enterprise levels. Read operations are consolidated behind method-dispatch tools to match the current MCP surface: - repository_ruleset_read (get, list, get_rules_for_branch, list_rule_suites, get_rule_suite) - organization_repository_ruleset_read (get, list) Write operations remain single-purpose tools, split by level because each level requires a distinct OAuth scope for scope-challenge accuracy: - create_repository_ruleset (repo) - create_organization_repository_ruleset (admin:org) - create_enterprise_repository_ruleset (admin:enterprise) Adds the read:enterprise and admin:enterprise scopes and the law octicon as shared governance infrastructure. Supersedes #821. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e886867-a922-419a-b02c-ac643716aea8
Add tools for reading and setting GitHub custom property values at the repository, organization, and enterprise levels within the governance toolset. Read and write are separate tools (ReadOnlyHint drives read-only-mode filtering) and split by level because each level requires a distinct OAuth scope for scope-challenge accuracy: - get_repository_custom_properties (repo) - create_or_update_repository_custom_properties (repo) - get_organization_custom_properties (read:org) - create_or_update_organization_custom_properties (admin:org) - get_enterprise_custom_properties (read:enterprise) - create_or_update_enterprise_custom_properties (admin:enterprise) Supersedes #821. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e886867-a922-419a-b02c-ac643716aea8
There was a problem hiding this comment.
Pull request overview
Adds six custom-property tools to the governance toolset for repository values and organization/enterprise definitions.
Changes:
- Adds read and write handlers with level-specific scopes.
- Adds unit tests and tool-schema snapshots.
- Updates generated governance documentation.
Show a summary per file
| File | Description |
|---|---|
README.md |
Documents the new tools. |
pkg/github/tools.go |
Registers tools and updates metadata. |
pkg/github/custom_properties.go |
Implements custom-property tools and schemas. |
pkg/github/custom_properties_test.go |
Tests handlers and schemas. |
pkg/github/__toolsnaps__/get_repository_custom_properties.snap |
Snapshots repository read schema. |
pkg/github/__toolsnaps__/get_organization_custom_properties.snap |
Snapshots organization read schema. |
pkg/github/__toolsnaps__/get_enterprise_custom_properties.snap |
Snapshots enterprise read schema. |
pkg/github/__toolsnaps__/create_or_update_repository_custom_properties.snap |
Snapshots repository write schema. |
pkg/github/__toolsnaps__/create_or_update_organization_custom_properties.snap |
Snapshots organization write schema. |
pkg/github/__toolsnaps__/create_or_update_enterprise_custom_properties.snap |
Snapshots enterprise write schema. |
docs/remote-server.md |
Updates remote governance documentation. |
Review details
- Files reviewed: 11/11 changed files
- Comments generated: 2
- Review effort level: Balanced
| "value": { | ||
| Description: "The value to assign. A string, an array of strings, or null to clear the value", | ||
| }, | ||
| }, | ||
| Required: []string{"property_name"}, |
| "default_value": { | ||
| Description: "Default value of the property. A string or an array of strings", | ||
| }, |
53de049 to
f340ea4
Compare
|
👋 Heads up: #2991 (this PR's base) was rebased onto current This PR's custom-properties functionality is not superseded by that change — it's a separate API surface and remains a valid follow-on layer. Two things to do before it can merge cleanly though:
Leaving this open since the functionality itself is still needed. |
Governance toolset — Custom Properties (PR 2 of 2)
Adds the second half of the
governancetoolset: GitHub custom properties (get/set) at the repository, organization, and enterprise levels.This supersedes the very stale #821 (re: #820), replayed onto the current codebase (modelcontextprotocol/go-sdk, go-github v87).
Tools (6)
get_repository_custom_propertiesrepoget_organization_custom_propertiesread:orgget_enterprise_custom_propertiesread:enterprisecreate_or_update_repository_custom_propertiesrepocreate_or_update_organization_custom_propertiesadmin:orgcreate_or_update_enterprise_custom_propertiesadmin:enterpriseDesign notes
ReadOnlyHintdrives read-only-mode filtering.Verified:
script/lint(0 issues),script/test,script/generate-docsall green.